package cn.hy.机考.part01;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;

/**
 * @author zhaomu
 * <p>
 * 五、运维日志排序
 * 根据日志时间先后顺序对日志进行排序，日志时间格式为 H:M:S.N
 * H 表示小时(0~23)
 * M 表示分钟(0~59)
 * S 表示秒(0~59)
 * N 表示毫秒(0~999)
 * 时间可能并没有补全，也就是说，01:01:01.001 也可能表示为 1:1:1.1 第一行输入一个整数 n 表示日志条数，1<=n<=100000，
 * 接下来 n 行输入 n 个时间 按时间升序排序之后的时间，如果有两个时间表示的时间相同，则保持输入顺序
 * 2
 * 01:41:8.9
 * 1:1:09.211
 * <p>
 * 1:1:09.211
 * 01:41:8.9
 * <p>
 * 3
 * 23:41:08.023
 * 1:1:09.211
 * 08:01:22.0
 * <p>
 * 1:1:09.211
 * 08:01:22.0
 * 23:41:08.023
 */
public class Demo05 {


    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine().trim());
        String[] diary = new String[n];
        for (int i = 0; i < n; i++) {
            diary[i] = br.readLine().trim();
        }
        sortDiary(diary);
        for (int i = 0; i < n; i++) {
            System.out.println(diary[i]);
        }
    }

    private static String[] sortDiary(String[] diary) {
        Arrays.sort(diary, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                o1 = o1.replace(".", ":");
                o2 = o2.replace(".", ":");
                String[] s1 = o1.split(":");
                String[] s2 = o2.split(":");
                for (int i = 0; i < s1.length; i++) {
                    int v1 = Integer.parseInt(s1[i]);
                    int v2 = Integer.parseInt(s2[i]);
                    if (v1 != v2) {
                        return v1 - v2;
                    }
                }
                return 0;
            }
        });
        return diary;
    }


}
